#define _CRT_SECURE_NO_WARNINGS 1

#include<iostream>
#include "hashTable.h"
#include "UnorderedMap.h"
#include "UnorderedSet.h"

//void TestHashTable()
//{
//	HashTable<int, int> hash;
//	int arr[] = { 4,14,11,34,4,7,1,11,18,38,0,3 };
//
//	for (const auto& e : arr)
//	{
//		hash.insert(std::make_pair(e, e));
//	}
//	/*hash.insert(std::make_pair(8, 8));
//
//	auto it1 = hash.find(11);
//	auto it2 = hash.find(4);
//	auto it3 = hash.find(10);
//	std::cout << it1->_kv.first << ":" << it1->_kv.second << std::endl;
//	std::cout << it2->_kv.first << ":" << it2->_kv.second << std::endl;
//	std::cout << it3 << std::endl;
//
//	hash.erase(34);
//	hash.erase(18);
//	std::cout << hash.erase(10) << std::endl;*/
//}

void TestUnorderedMap()
{
	zhang::unordered_map<int, int> mp;
	int arr[] = { 4,14,11,34,4,7,1,11,18,38,0,3,8,23,56,57,23,56,89 };

	for (const auto& e : arr)
	{
		mp.insert(std::make_pair(e, e));
	}

	for (const auto& e : mp)
	{
		std::cout << e.first << ":" << e.second << std::endl;
	}
}

void TestUnorderedSet()
{
	zhang::unordered_set<int> st;
	int arr[] = { 4,14,11,34,4,7,1,11,18,38,0,3,8,23,56,57,23,56,89 };

	for (const auto& e : arr)
	{
		st.insert(e);
	}

	for (const auto& e : st)
	{
		std::cout << e << std::endl;
	}
}

int main()
{
	//TestHashTable();
	//TestUnorderedMap();
	TestUnorderedSet();
	return 0;
}